Xbasic

Stritran_multi_expressions Function

Syntax

C textOut = STRITRAN_MULTI_EXPRESSIONS(C character,C pairs)

Arguments

character

String in which you want to perform a search and replace operation.

pairs

A CR-LF delimited list of search and replace values. Each row in the list has this format: searchString=replacementExpression If a replacementExpression contains any search strings, you can force the replacement to occur recursively by using a double = sign. e.g. searchString==replacementExpression Each = sign causes an additional recursion. For example: searchString===replacementExpression will recurse over the data 3 times.

Description

Replaces occurrences of tokens before '=' with results of expression after '=' in cr-lf delimited list of pairs compare is case insensitive.

Example

dim string as c
string = "Hello {name}. Today is {date}."
dim sr as c
sr = <<%txt%
{name}="Peter"
{date}=date()
%txt%
?stritran_multi_expressions(string,sr)
= Hello Peter. Today is 8/26/2009
 
'Now try recursive replacement
dim string as c
string = "Hello {name}. Today is {date}."
dim sr as c
sr = <<%txt%
{lastname}=="Smith"
{name}="Peter {lastname}"
{date}=date()
%txt%
?stritran_multi_expressions(string,sr)
= Hello Peter Smith. Today is 8/26/2009

Note that this function looks for the token anywhere in the string - when you have tokens where ONE token is a substring of another token you need to put the longer token first. This can easily be accomplished using the a5_stritran_multi_expression_Prepare Function. For example:

string = "this is parameter1 and this is parameter10 "

var1 = "alpha"
var2 = "beta"

sr = <<%txt%
#parameter1=var1
#parameter10=var2
#%txt%

?stritran_multi_expressions(string,sr)
= "this is alpha and this is alpha0 "  ''

sr2 = a5_stritran_multi_expression_Prepare(sr)

?sr2 
= parameter10=var2
parameter1=var1

'sr2 is now sorted by the length of the search string (the part before the = sign on each line of the string)

?stritran_multi_expressions(string,sr2)
= "this is alpha and this is beta "   '

See Also